package com.ruoyi.school.service;

import com.ruoyi.school.domain.PacAcademicOutput;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ruoyi.school.domain.vo.AcademicCommonVo;
import com.ruoyi.school.domain.vo.HonorWallTopThreeVo;
import com.ruoyi.school.domain.vo.PacAcademicOutputVo;
import com.ruoyi.school.handler.wall.WallTopThree;
import com.ruoyi.system.domain.TableData;

import java.util.ArrayList;
import java.util.List;

/**
* @author jeremylin
* @description 针对表【academic_output(学术成果表)】的数据库操作Service
* @createDate 2025-05-24 17:35:38
*/
public interface AcademicOutputService extends IService<PacAcademicOutput> {

    TableData<PacAcademicOutputVo> getList(PacAcademicOutputVo academicOutput);

    PacAcademicOutput getDetails(PacAcademicOutput pacAcademicOutput);

    boolean add(PacAcademicOutput pacAcademicOutput);

    boolean edit(PacAcademicOutput pacAcademicOutput);

    boolean delete(PacAcademicOutput pacAcademicOutput);

    boolean wall(AcademicCommonVo academicCommonVo);

    /**
     * 审批
     * @param pacAcademicOutput
     */
    void audit(PacAcademicOutput pacAcademicOutput);

    /**
     * 获取学生的学术成果
     *
     * @param pacAcademicOutput
     * @return
     */
    ArrayList<PacAcademicOutputVo> myList(PacAcademicOutput pacAcademicOutput);

    /**
     * 学生新增学术成果
     * @param pacAcademicOutput
     * @return
     */
    boolean addByStu(PacAcademicOutput pacAcademicOutput);

    /**
     * 学术编辑学术成果
     * @param pacAcademicOutput
     * @return
     */
    boolean editByStu(PacAcademicOutput pacAcademicOutput);

    /**
     * 下墙
     * @param academicCommonVo
     * @return
     */
    boolean unWall(AcademicCommonVo academicCommonVo);

    /**
     * 根据等级查询，数量
     * @param id
     * @return
     */
    int countByLevel(Integer id);

    /**
     * 获取前三
     * @param builder
     * @return
     */
    List<HonorWallTopThreeVo> getTopThree(WallTopThree builder);

    /**
     * 获取学生的荣誉列表
     * @param wallTopThree
     * @return
     */
    List<HonorWallTopThreeVo> getStuHonorList(WallTopThree wallTopThree);

    /**
     * 获取高质量奖项 数量
     * @return
     */
    long getHighQualityCount();

    /**
     * 通过审核的数量
     * @return
     */
    long countByAudit();

    /**
     * 找到是图片数据的前五
     * @param id
     * @return
     */
    List<PacAcademicOutput> selectStuTop5(Integer id);

    List<PacAcademicOutput> getListByIds(List<Long> ids);
}
